<?php

class JobeetJob extends BaseJobeetJob {
	
public function extend()
  {
    if (!$this->expiresSoon())
    {
      return false;
    }
 
    $this->setExpiresAt(time() + 86400 * sfConfig::get('app_active_days'));
 
    return $this->save();
  }


	public function __toString() {
		return sprintf ( '$s at $s ($s)', $this->getPosition (), $this->getCompany (), $this->getLocation () );
	}
	
	public function getCompanySlug() {
		return Jobeet::slugify ( $this->getCompany () );
	}
	
	public function getPositionSlug() {
		return Jobeet::slugify ( $this->getPosition () );
	}
	
	public function getLocationSlug() {
		return Jobeet::slugify ( $this->getLocation () );
	}
	public function save(PropelPDO $con = null) {
		if ($this->isNew () && ! $this->getExpiresAt ()) {
			$now = $this->getCreatedAt () ? $this->getCreatedAt () : time ();
			$this->setExpiresAt ( $now + 86400 * sfConfig::get ( 'app_active_days' ) );
		}
		
		if (!$this->getToken()) {
			$this->setToken(sha1($this->getEmail().rand(11111, 99999)));
		}
		
		
		return parent::save ( $con );
	}
	
	public function getTypeName()
{
  return $this->getType() ? JobeetJobPeer::$types[$this->getType()] : '';
}
 
public function isExpired()
{
  return $this->getDaysBeforeExpires() < 0;
}
 
public function expiresSoon()
{
  return $this->getDaysBeforeExpires() < 5;
}
 
public function getDaysBeforeExpires()
{
  return floor(($this->getExpiresAt('U') - time()) / 86400);
}

public function publish()
{
  $this->setIsActivated(true);
  $this->save();
}

}
